//
// Created by 17775 on 2024/6/21.
//

#ifndef RAYCI_THREED_VIEW_H
#define RAYCI_THREED_VIEW_H

#include <QWidget>
#include <QtCore/qobject.h>
#include <QtDataVisualization/q3dsurface.h>
#include "../qcustomplot.h"
#include "../utils/RayCiDataReceiveListener.h"
#include "ThreeD_View_Modifier.h"


QT_BEGIN_NAMESPACE
namespace Ui { class ThreeD_View; }
QT_END_NAMESPACE

class ThreeD_View : public QWidget {
Q_OBJECT

public:
    explicit ThreeD_View(QWidget *parent = nullptr);
    ~ThreeD_View() override;
    bool initialize(const QSize &minimumGraphSize, const QSize &maximumGraphSize);
    QWidget *surfaceWidget() { return m_surfaceWidget; }
//    void receiveMessage(const std::shared_ptr<CCDImageData<double>>& msg) override;
//    void processCCDImageData(std::shared_ptr<CCDImageData<double>>);
    void initView();

private:

    Ui::ThreeD_View *ui;
    Q3DSurface *m_surfaceGraph = nullptr;
    QWidget *m_container = nullptr;
    QWidget *m_surfaceWidget = nullptr;
    ThreeD_View_Modifier* modifier = nullptr;
};


#endif //RAYCI_THREED_VIEW_H
